Motion estimation systems and methods

ABSTRACT

A motion estimation system is disclosed. The motion estimation system may include one or more memories storing instructions, and one or more processors configured to execute the instructions to receive, from a scanning device, scan data representing at least one object obtained by a scan over at least one of the plurality of sub-scanning regions, and generate, from the scan data, a sub-pointcloud for one of the sub-scanning regions. The sub-pointcloud includes a plurality of surface points of the at least one object in the sub-scanning region. The one or more processors may be further configured to execute the instructions to estimate the motion of the machine relative to the at least one object by comparing the sub-pointcloud with a reference sub-pointcloud.

TECHNICAL FIELD

The present disclosure relates generally to systems and methods for motion estimation, more specifically, to systems and methods for motion estimation by using pointclouds.

BACKGROUND

Autonomously controlled and/or semi-autonomously controlled machines are capable of operating with little or no human input by relying on information received from various machine systems. For example, a machine guidance system may detect a location and movement of the machine based on inputs received about the machine's environment and may then control future movements of the machine based on the detected location and movement. In order to effectively guide the machine, however, it may be desirable to ensure that the location and movement of the machine are being detected and updated with a frequency high enough to ensure proper machine operation.

U.S. Pat. No. 7,336,805 to Gehring et al. that was issued on Feb. 26, 2008 (“the '805 patent”) discloses an exemplary guidance system for a motor vehicle. Specifically, the system acquires image data of a surrounding field of the motor vehicle by using an imaging sensor. The system them extracts positional parameters of at least one potential destination relative to the motor vehicle from the acquired image data. Based on the extracted positional parameters, the system calculates an optimized travel path, so as to assist a subsequent vehicle guidance for the at least one potential destination.

Although the system of the '805 patent may be useful in guiding a motor vehicle along an optimized travel path, the system of the '805 patent calculates the travel path based on the image data of the entire surrounding field of the motor vehicle. Due to the large size of the image data, the calculation may unnecessarily consume large amounts of computing resources. As a result, the system of the '805 patent may not provide and update the optimized travel path with a high enough frequency.

The motion estimation system of the present disclosure is directed toward solving the problem set forth above and/or other problems of the prior art.

SUMMARY

In one aspect, the present disclosure is directed to a motion estimation system. The motion estimation system may include one or more memories storing instructions, and one or more processors configured to execute the instructions to receive, from a scanning device, scan data representing at least one object obtained by a scan over at least one of the plurality of sub-scanning regions, and generate, from the scan data, a sub-pointcloud for one of the sub-scanning regions. The sub-pointcloud includes a plurality of surface points of the at least one object in the sub-scanning region. The one or more processors may be further configured to execute the instructions to estimate the motion of the machine relative to the at least one object by comparing the sub-pointcloud with a reference sub-pointcloud.

In another aspect, the present disclosure is directed to a computer-implemented method of estimating a motion of a machine. The method may include dividing a full scanning region into a plurality of sub-scanning regions. The method may also include receiving, from a scanning device, scan data representing at least one object obtained by a scan over at least one of the plurality of sub-scanning regions. The method may further include generating, by a processor, a sub-pointcloud from the scan data for one of the sub-scanning regions. The sub-pointcloud may include a plurality of surface points of the at least one object in the sub-scanning region. The method may still further include estimating, by the processor, the motion of the machine relative to the at least one object by comparing the sub-pointcloud with a reference sub-pointcloud.

In still another aspect, the present disclosure is directed to a system for motion estimation. The system may include a scanning device capable of being mounted on a machine and configured to scan at least one object over a sub-scanning region among a plurality of sub-scanning regions of a full scanning region and generate a sub-pointcloud of the sub-scanning region. The sub-pointcloud may include a plurality of surface points of the at least one object in the sub-scanning region. The system may also include a controller configured to estimate a motion of the machine relative to the at least one object by comparing the sub-pointcloud with a corresponding reference sub-pointcloud.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of a work site and an exemplary machine consistent with certain disclosed embodiments.

FIG. 2 is a schematic illustration of a scanning mechanism that may be included in the machine of FIG. 1.

FIG. 3 is a schematic illustration of a method of motion estimation that may be performed by the machine of FIG. 1.

FIG. 4 is a flowchart depicting an exemplary method of motion estimation that may be performed by the machine of FIG. 1.

FIG. 5 is a schematic illustration of a method of motion estimation that may be performed by the machine of FIG. 1.

FIG. 6 is a schematic illustration of a method of motion estimation that may be performed by the machine of FIG. 1.

DETAILED DESCRIPTION

FIG. 1 illustrates an environment 100 and an exemplary machine 110 performing a task at environment 100. Environment 100 may be a worksite such as, for example, a mine site, a landfill, a quarry, a construction site, or any other type of environment. Environment 100 may also be an exploration site in a location that might be difficult for a human operator to be present, such as another planet. Environment 100 may include one or more moving or stationary objects 120 located a particular distance from machine 110. For example, objects 120 may include landmarks, geological markers, trees, buildings, drills, pipelines, etc.

Machine 110 may embody a machine configured to perform some type of operation associated with an industry such as mining, construction, farming, transportation, power generation, or any other industry known in the art. For example, machine 110 may be an earth moving machine such as a haul truck, a dozer, a loader, a backhoe, an excavator, a motor grader, a wheel tractor scraper or any other earth moving machine. Alternatively, machine 110 may be a planetary exploration robot. Machine 110 may travel along a certain travel direction in environment 100. Machine 110 may also rotate or circle around a certain axis.

Machine 110 may include a motion estimation system 130 for estimating an ego motion of machine 110. “Ego motion”, as used herein, refers to the three-dimensional (3D) motion of machine 110 relative to objects 120 within environment 100. The ego motion may have six parameters, three for translation velocities in x, y, z coordinates, and three for rotation angles (yaw, pitch, and roll), although any other coordinate system with different parameters may be used.

Motion estimation system 130 may include a scanning device 140 and a controller 150 connected to each other by a bus 160. While a bus architecture is shown in FIG. 1, any suitable architecture may be used, including any combination of wired and/or wireless networks. Additionally, such networks may be integrated into any local area network, wide area network, and/or the Internet.

Scanning device 140 may be mounted on a surface of machine 110 to sense objects 120 within a particular region that is scanned by scanning device 140. Scanning device 140 may be, for example, a LIDAR (light detection and ranging) device, a RADAR (radio detection and ranging) device, a SONAR (sound navigation and ranging) device, optical device such as a camera, or another device known in the art. In one example, scanning device 140 may include an emitter that emits a detection beam, and an associated receiver that receives any reflection of that detection beam. Based on characteristics of the received beam, scanning device 140 may generate scan data representing objects 120 within the particular region that is scanned by scanning device 140.

Motion estimation system 130 may also include other sensors such as, for example, accelerometers, gyroscopes, global positioning system (GPS) devices, radar devices, etc. These sensors may be used to measure, e.g., location, horizontal, vertical, and forward velocities and accelerations, inclination angle (e.g., pitch), inclination angular rate, heading, yaw rate, roll angle, roll rate, etc.

Controller 150 may receive scan data transmitted by scanning device 140, and determine an ego motion of machine 110 based on the scan data. Based on the determined ego motion, controller 150 may control movement of machine 110. Controller 150 may also control the scanning movement of scanning device 140.

Controller 150 may include processor 152, storage 154, and memory 156, included together in a single device and/or provided separately. Processor 152 may include one or more known processing devices, such as a microprocessor from the Pentium™ or Xeon™ family manufactured by Intel™, the Turion™ family manufactured by AMD™, or any other type of processor. Memory 156 may include one or more storage devices configured to store information used by controller 150 to perform certain functions related to disclosed embodiments. Storage 154 may include a volatile or non-volatile, magnetic, semiconductor, tape, optical, removable, nonremovable, or other type of storage device or computer-readable medium. Storage 154 may store programs and/or other information, such as information related to processing data received from scanning device 140, as discussed in greater detail below.

FIG. 2 schematically illustrates a scanning mechanism of scanning device 140. In one embodiment, scanning device 140 may be configured to rotate about an axis O in 360 degrees to scan a full scanning region 200, which is shown as a circle having a center at scanning device 140. As it scans full scanning region 200, scanning device 140 may generate scan data representing objects 120 within the 360 degrees of full scanning region 200, and transmit the scan data to controller 150. Based on the scan data, controller 150 may generate a first pointcloud. A “pointcloud”, as used herein, is a 3D pointcloud that includes a plurality of data points. Each data point within the first pointcloud may correspond to a 3D coordinate, such as (x, y, z), of one of a plurality of surface points of objects 120 within full scanning region 200 relative to scanning device 140. Thus, the first pointcloud may be a representation of the environment around machine 110 within full scanning region 200. In some embodiments, scanning device 140 may generate the pointcloud by itself, and output the generated pointcloud to controller 150.

While the embodiment of FIG. 2 describes scanning device 140 as being rotatable about axis O, in other embodiments, scanning device 140 may be configured to scan full scanning region 200 without rotating. For example, when scanning device 140 includes a LIDAR device, one or more optical devices internal to or external to scanning device 140 may cause a laser beam to cover full scanning region 200 without the need for scanning device 140 itself to rotate about axis O. In another example, scanning device 140 may sweep back and forth to scan full scanning region 200. Moreover, while FIG. 2 illustrates that full scanning region 200 includes 360 degrees, the present disclosure is not so limited, and full scanning region 200 may be any portion of the 360 degrees, such as 180 degrees, 90 degrees, etc., based on the application of machine 110.

Because scanning device 140 is mounted to machine 110, it moves as machine 110 moves. As it moves, scanning device 140 may continuously generate scan data from full scanning region 200. However, because it is moving, the scan data from a subsequent scan of full scanning region 200 may differ from that of a previous scan on full scanning region 200. Thus, for example, if controller 150 generates a the second pointcloud representing a subsequent scan, it may differ from the first pointcloud. Controller 150 may compare the second pointcloud with the first pointcloud to estimate the ego motion of scanning device 140, and thereby estimate the ego motion of machine 110 on which scanning device 140 is mounted.

In some embodiments, controller 150 may derive a transformation matrix M for transforming the second pointcloud, which may be represented by matrix B, into a transformed pointcloud M×B such that a difference between the transformed pointcloud M×B and the first pointcloud does not exceed a threshold. For example, transformation matrix M may be derived to minimize an average difference between each one of the (x, y, z) coordinates of each data point in the transformed pointcloud M×B and its nearest point in the first pointcloud. To validate the transformation matrix M, the threshold may be implemented so that the minimized average difference is smaller than a threshold value such as, for example, 1 mm, or any other value determined, for example, based on the application of machine 110 and characteristics of objects 120 within environment 100. Transformation matrix M may be used to estimate the ego motion of machine 110. For example, transformation matric M may include one or more values representing an estimated change in position of machine 110 in one or more directions, such as along the x-, y-, or z-axes and/or an estimated change in the orientation of machine 110, such as a change in yaw, pitch, or roll angles. If the minimized average difference is still higher than the threshold, then a valid transformation matrix M could not be found between the first pointcloud and the second pointcloud. In such case, controller 150 could not estimate the ego motion of machine 110.

In certain embodiments, the first and second pointclouds generated by controller 150 may include tens of thousands or even millions of data points. The large number of data points may make it computationally expensive to calculate the ego motion of machine 110 using the entire set of data points . In addition, due to various mechanical constraints, a full scan of 360 degrees by scanning device 140 may take approximately 0.1 second. Thus, if controller 150 waits for the full scan to be completed before estimating the ego motion of machine 110, controller 150 may be limited to doing so at a frequency of approximately 10 Hz. In certain embodiments, such a frequency may not be high enough for properly controlling the movement of machine 110.

FIG. 3 schematically illustrates an exemplary method of motion estimation that may be performed by motion estimation system 130 to increase the frequency with which the ego motion of machine 110 may be determined and to reduce the computational requirements associated with doing so. In this embodiment, full scanning region 300 may be divided into N sub-scanning regions, wherein N is any integer greater than 1. In the exemplary embodiment as shown in FIG. 3, full scanning region 300 is divided into ten sub-scanning regions 300 a-300 j. Each one of sub-scanning regions 300 a-300 j is shown as a sector of full scanning region 300. Based on scan data received from scanning device 140 for each one of sub-scanning regions 300 a-300 j, controller 150 may generate a sub-pointcloud for each one of the ten sub-scanning regions 300 a-300 j. Controller 150 may compare each sub-pointcloud with a reference sub-pointcloud, and estimate the ego motion based on the comparison. A reference sub-pointcloud may be, for example, a sub-pointcloud determined based on a previous scan of scanning device 140 over a sub-region of full scanning region 300.

In this way, controller 150 does not have to wait for the full scan of 360 degrees to be completed in order to estimate the ego motion. Rather, controller 150 may estimate the ego motion after a scan over a sub-scanning region is completed, thus increasing the frequency at which controller 150 outputs an ego motion estimation by a factor of N, the number of sub-scanning regions contained within full scanning region 300. In addition, the number of data points in one sub-pointcloud is N times less than the number of data points in the full pointcloud. Therefore, the computational complexity for estimating the ego motion is also lowered, enabling faster calculations of the ego motion estimation.

Although FIG. 3 shows that full scanning region 300 is divided into N sub-scanning regions in the x-y plane defined by the rotational movement of scanning device 140, the present disclosure is not so limited. When scanning device 140 is a LiDAR device, it may project more than one, for example, 64, laser beams, and thus it may cover a three-dimensional full scanning region. In this case, the three-dimensional full scanning region may be divided into N sub-scanning regions vertically, e.g., in a z-direction that is perpendicular to the x-y plane. Alternatively, the full scanning region may first be divided into N sub-scanning regions in the x-y plane, and then each sub-scanning region may be further divided into M sub-scanning regions vertically. Therefore, the number of data points in each sub-pointcloud may be further reduced.

The reference sub-pointcloud may be selected among a plurality of reference sub-pointclouds. In some embodiments, the plurality of reference sub-pointclouds may be stored in storage 154. For example, scanning device 140 may scan over full scanning region 300 including sub-scanning regions 300 a-300 j, and controller 150 may generate and store sub-pointclouds for respective sub-scanning regions 300 a-300 j in storage 154 as the plurality of reference sub-pointclouds. The reference sub-pointclouds may be updated every time when a scan over the same sub-scanning region is performed.

The operation of motion estimation system 130 will now be described in connection with the flowchart of FIG. 4. First, controller 150 may divide a full scanning region into a plurality of sub-scanning regions (step 410). For example, controller 150 may determine how to divide full scanning region 300 and the number N of the sub-scanning regions based on a user input, the size and characteristics of environment 100 (e.g., surface roughness, density of objects 120 within environment 100, etc.), the capabilities of processor 152, a speed of scanning device 140, a speed of machine 110, or any combination of the above.

Then, scanning device 140 may perform may scan a first sub-scanning region, e.g, sub-scanning region 300 a (step 412). Scanning device 140 may transmit scan data obtained by the scan over sub-scanning region 300 a to controller 150. Based on the scan data, controller 150 may generate a sub-pointcloud for sub-scanning region 300 a (step 414). Alternatively, scanning device 140 may generate the sub-pointcloud by itself, and transmit the generated sub-pointcloud to controller 150. Then, controller 150 may determine whether a reference sub-pointcloud for the same sub-scanning region, i.e., sub-scanning region 300 a, exists in storage 154 (step 416).

When scanning device 140 has previously scanned sub-scanning region 300 a, a reference sub-pointcloud has been previously generated for scanned sub-scanning region 300 a and stored in storage 154. In such case, controller 150 may determine that a reference sub-pointcloud for the same sub-scanning region exists in storage 154 (step 416, Yes), and then controller 150 may estimate an ego motion of machine 110 by comparing the sub-pointcloud with one of a plurality of reference sub-pointclouds stored in storage 154 (step 418). Controller 150 may output a signal representing the estimated ego motion (step 420). Controller 150 may also store the sub-pointcloud in storage 154 as a new reference sub-pointcloud for sub-scanning region 300 a (step 422).

When scanning device 140 has not previously scanned sub-scanning region 300 a, controller 150 may determine that a reference sub-pointcloud for sub-scanning region 300 a does not exist in storage 154 (step 416, No). Then, the process may move directly to step 422 where the sub-pointcloud is stored as a new referenced sub-pointcloud for sub-scanning region 300 a.

Afterwards, controller 150 may determine whether to continue the motion estimation (step 424). For example, controller 150 may check to see if a stop signal is received from an upper level controller, or from a user. When controller 150 determines that it should continue the motion estimation (step 424, Yes), controller 150 may instruct scanning device 140 to scan a subsequent sub-scanning region, i.e., sub-scanning region 300 b (step 426). Then, the process may return to step 414 where a sub-pointcloud is generated based on the scan data obtained by the scan over sub-scanning region 300 b. When controller 150 determines that it should not continue the motion estimation (step 424, No), the motion estimation process will end.

Controller 150 may select the reference sub-pointcloud among the plurality of reference sub-pointclouds stored in storage 154 based on a previously estimated motion of machine 110, the number of the sub-scanning regions, and/or a rotation speed of scanning device 140. For example, controller 150 may first determine linear velocities along the x-, y-, or z-axes, and angular velocities (yaw rate, roll rate, and pitch rate) of machine 110 based on a previously estimated motion of machine 110. Based on the linear velocities and the angular velocities of machine 110, and the rotation speed of scanning device 140, controller 150 may estimate the amount of displacement between a plurality of current sub-scanning regions covered by a current scan and a plurality of previous sub-scanning regions covered by a previous scan. Then, controller 150 may select a previous sub-scanning region that substantially overlaps with a current sub-scanning region, and select the reference sub-pointcloud corresponding to that previous sub-scanning region for estimating motion. “Substantially overlap”, as used herein, refers to a situation in which the previous sub-scanning region has more than half of its area in common with the current sub-scanning region.

For example, machine 110 may be moving in a linear direction indicated by an arrow 510 in FIG. 5. A first scan by scanning device 140 may cover full scanning region 500 which may be divided into N sub-scanning regions starting with a sub-scanning region 500 a. A second and subsequent scan by scanning device 140 may cover full scanning region 500′ which may be divided into N sub-scanning regions starting with a sub-scanning region 500 a′. Because the linear velocity of machine 110 is small, sub-scanning regions 500 a and 500 a′ overlap with each other, and cover substantially the same object. Therefore, controller 150 may use a sub-pointcloud corresponding to sub-scanning region 500 a as a reference sub-pointcloud, and compare a sub-pointcloud corresponding to sub-scanning region 500 a′ with the reference sub-pointcloud, to estimate the ego motion of machine 110.

In some embodiments, when the number N of sub-scanning regions exceeds a threshold value, and the velocity of machine 110 is large relative to the revolution rate of scanning device 140, the reference sub-pointcloud may be generated based on scan data obtained by a previous scan over a different sub-scanning region. For example, machine 110 may be rotating in a direction indicated by an arrow 610 in FIG. 6. A first scan by scanning device 140 may cover full scanning region 600 which may be divided into N sub-scanning regions starting with a sub-scanning region 600 a. A second and subsequent scan by scanning device 140 may cover full scanning region 600′ which may be divided into N sub-scanning regions starting with a sub-scanning region 600 a′. Because the angular velocity of machine 110 is large, sub-scanning region 600 a′ does not overlap with sub-scanning region 600 a. Rather, sub-scanning region 600 a′ substantially overlap with sub-scanning region 600 c. Therefore, controller 150 use a sub-pointcloud corresponding to sub-scanning region 600 c as a reference sub-pointcloud, and compare a sub-pointcloud corresponding to sub-scanning region 600 a′ with the reference sub-pointcloud to estimate the ego motion of machine 110.

In some embodiments, controller 150 may analyze the reference sub-pointclouds stored in storage 154 and the previously estimated ego motion, and instruct scanning device 140 to scan only a subset of the sub-scanning regions. For example, as shown in FIG. 5, at time t1, controller 150 may receive scan data from a scan over full scanning region 500 and may generate sub-pointclouds for each of the sub-scanning regions as the reference sub-pointclouds. By analyzing the reference sub-pointclouds, controller 150 may determine that object 120 is only present in sub-scanning region 500 a. Additionally, by referring to the previously estimated ego motion, controller 150 may determine that machine 110 is moving in the linear direction indicated by arrow A. Therefore, controller 150 may instruct scanning device 140 to scan, at time t2, only sub-scanning region 500 a′, rather than the entire full scanning region 500.

In another example, as shown in FIG. 6, at time t1, controller 150 may determine that object 120 is only present in sub-scanning region 600 a. Controller 150 may also estimate that, based on the estimated ego motion of machine 110, sub-scanning region 600 i′ would correspond to sub-scanning region 600 a. Then, controller 150 may instruct scanning device 140 to scan only sub-scanning region 600 i′ at time t2. In this way, computation resource and power required for motion estimation may be further reduced.

INDUSTRIAL APPLICABILITY

The disclosed motion estimation system 130 may be applicable to any machine where motion estimation is desired. According to the above embodiments, the disclosed motion estimation system 130 estimates the ego motion of machine 110 after scanning device 140 completes a scan over a sub-scanning region. Therefore, the disclosed motion estimation system 130 allows for a faster output rate of the ego motion.

In addition, the disclosed motion estimation system 130 estimates the ego motion of machine 110 based on data points contained in sub-pointclouds, the number of which is N times less than the number of data points in the full pointcloud. Therefore, the disclosed motion estimation system 130 allows for a lower computational requirement.

It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed motion estimation system. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the disclosed motion estimation system. It is intended that the specification and examples be considered as exemplary only, with a true scope being indicated by the following claims and their equivalents. 

What is claimed is:
 1. A system for estimating a motion of a machine, the system comprising: one or more memories storing instructions; and one or more processors configured to execute the instructions to: divide a full scanning region into a plurality of sub-scanning regions; receive, from a scanning device, scan data representing at least one object obtained by a scan over at least one of the plurality of sub-scanning regions; generate, from the scan data, a sub-pointcloud for one of the sub-scanning regions, the sub-pointcloud including a plurality of surface points of the at least one object in the sub-scanning region; and estimate the motion of the machine relative to the at least one object by comparing the sub-pointcloud with a reference sub-pointcloud.
 2. The system of claim 1, wherein the one or more processors are further configured to derive a transformation matrix for transforming the sub-pointcloud into a transformed pointcloud such that a difference between the transformed pointcloud and the reference sub-pointcloud does not exceed a threshold, and estimate the motion of the machine based on the transformation matrix.
 3. The system of claim 1, wherein one or more processors are further configured to select the reference sub-pointcloud among a plurality of reference sub-pointclouds based on a previously estimated motion of the machine.
 4. The system of claim 3, wherein the reference sub-pointcloud is selected such that the reference sub-pointcloud corresponds to a previous sub-scanning region covered by a previous scan and the previous sub-scanning region substantially overlaps with said one of the sub-scanning regions.
 5. The system of claim 1, wherein the full scanning region is a circle having a center at the scanning device, and each sub-scanning region is a sector of the full scanning region.
 6. The system of claim 1, wherein the one or more processors are further configured to: generate a sub-pointcloud for each the plurality of sub-scanning regions, and estimate the motion of the machine by comparing the sub-pointcloud for each sub-scanning region to a corresponding reference sub-pointcloud.
 7. The system of claim 1, wherein the one or more processors are further configured: receive, from the scanning device, initial scan data obtained by an initial scan over the plurality of sub-scanning regions; generate, from the initial scan data, reference sub-pointclouds for the respective sub-scanning regions; store the reference sub-pointclouds in a storage device; and update at least one of the reference sub-pointclouds when scan data is received for the corresponding sub-scanning region.
 8. The system of claim 7, wherein the one or more processors are further configured to analyze the reference sub-pointclouds and a previously estimated ego motion, and instruct the scanning device to scan a subset of the sub-scanning regions based on a result of the analysis.
 9. The system of claim 1, wherein the sub-pointcloud includes three-dimensional coordinates information of at least a subset of points of the at least one object.
 10. A computer-implemented method of estimating a motion of a machine, comprising: dividing a full scanning region into a plurality of sub-scanning regions; receiving, from a scanning device, scan data representing at least one object obtained by a scan over at least one of the plurality of sub-scanning regions; generating, by a processor, a sub-pointcloud from the scan data for one of the sub-scanning regions, the sub-pointcloud including a plurality of surface points of the at least one object in the sub-scanning region; and estimating, by the processor, the motion of the machine relative to the at least one object by comparing the sub-pointcloud with a reference sub-pointcloud.
 11. The method of claim 10, further including: deriving a transformation matrix for transforming the sub-pointcloud into a transformed pointcloud such that a difference between the transformed pointcloud and the reference sub-pointcloud does not exceed a threshold; and estimating the motion of the machine based on the transformation matrix.
 12. The method of claim 10, further including selecting the reference sub-pointcloud among a plurality of reference sub-pointclouds based on a previously estimated motion of the machine.
 13. The method of claim 12, wherein the reference sub-pointcloud is selected such that the reference sub-pointcloud corresponds to a previous sub-scanning region covered by a previous scan and the previous sub-scanning region substantially overlaps with said one of the sub-scanning regions.
 14. The method of claim 10, further including: generating a sub-pointcloud for each one of the plurality of sub-scanning regions; and estimating the motion of the machine relative to the at least one object based on the sub-pointcloud for each sub-scanning region.
 15. The method of claim 10, further including: receiving, from the scanning device, initial scan data obtained by an initial scan over the plurality of sub-scanning regions; generating, from the initial scan data, reference sub-pointclouds for the respective sub-scanning regions; storing the reference sub-pointclouds in a storage device; and updating at least one of the reference sub-pointclouds when scan data is received for the corresponding sub-scanning region.
 16. The method of claim 15, further including: analyzing the reference sub-pointclouds and a previously estimated ego motion; and instructing the scanning device to scan a subset of the sub-scanning regions based on the analysis result.
 17. The method of claim 10, wherein the sub-pointcloud includes three-dimensional coordinates information of at least a subset of points of the at least one object.
 18. A system, comprising: a scanning device capable of being mounted on a machine and configured to scan at least one object over a sub-scanning region among a plurality of sub-scanning regions of a full scanning region and generate a sub-pointcloud of the sub-scanning region, the sub-pointcloud including a plurality of surface points of the at least one object in the sub-scanning region; a controller configured to estimate a motion of the machine relative to the at least one object by comparing the sub-pointcloud with a corresponding reference sub-pointcloud.
 19. The system of claim 18, wherein the scanning device is a light detection and ranging (LIDAR) unit that includes: a light projecting unit configured to project a light beam to the at least one object and scan the light beam over the sub-scanning region; and a photo sensing unit configured to sense a feedback light beam from the at least one object to generate the sub-pointcloud.
 20. The system of claim 18, wherein: the scanning device is further configured to scan the at least one object by rotating about an axis in 360 degrees, the full scanning region is a circle having a center at the scanning device, and each sub-scanning region is a sector of the full scanning region. 